import {
  getToken
} from '@/utils/auth.js'
import store from '@/store/index.js'
import {
  removeLoginState
} from '@/utils/roc.js'

// 白名单
const whiteList = [
  '/pages/login/login'
]

export default function() {
  const list = ['navigateTo', 'redirectTo', 'reLaunch', 'switchTab']
  // 用遍历的方式分别为,uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab这4个路由方法添加拦截器
  // uni.switchTab 拦截在微信小程序端无效，需要在 tabbar 页面 onShow中处理 https://uniapp.dcloud.net.cn/api/interceptor.html
  list.forEach(item => {
    uni.addInterceptor(item, {
      invoke(e) {
        // 获取要跳转的页面路径（url去掉"?"和"?"后的参数）
        const url = e.url.split('?')[0]

        // 判断当前窗口是白名单，如果是则不重定向路由
        let pass
        if (whiteList) {
          pass = whiteList.some((item) => {
            return url === item
          })
        }

        if (getToken()) {
          if (url === '/pages/login/login') {
            uni.switchTab({
              url: '/pages/home/home'
            })
            return false
          } else {
            return true
          }
        } else {
          // 是白名单
          if (pass) {
            return true
          } else {
            uni.$u.toast('请先登录')
            setTimeout(() => {
              removeLoginState()
              uni.reLaunch({
                url: "/pages/login/login"
              })
            }, 800)
            return false
          }
        }
        return e
      },
      fail(err) { // 失败回调拦截
        console.log(err)
      }
    })
  })
}